第3节 使用物联网制作人脸解锁


原理图

摄像头-->树莓派: WiFi
Note right of 树莓派: HomeAssistant处理人脸数据匹配
树莓派-->语音合成: 播放识别结果
树莓派-->红外发射器: 发送处理结果
红外发射器-->大门\n电灯\n空调\n电视\n……: 红外信号

硬件清单

  • 树莓派
  • 安卓手机
  • 红外发射器
  • 具有红外遥控器的大门/灯/空调/电视/……

硬件准备

摄像头和扬声器

  • 在安卓手机上下载安装IP摄像头Kodi两个app
  • 将安卓手机连接到教学WiFi,通过路由器查询记录手机的ip地址
  • 打开IP摄像头app,进行设置后点击最下面的开启服务器,记录下视频服务的地址和端口
  • Kodi是为了通过安卓手机的扬声器远程播放声音

红外发射器

  • 安卓手机安装智慧家app,对博联RM Pro红外发射器进行初始化设置,连接到教学WiFi,然后通过路由器查询记录ip地址和mac地址

HomeAssistant的启动

1.启动HomeAssistant

sudo docker start home-assistant 启动大概需要1分钟

2.访问HomeAssistant

树莓派ip:8123,选择API密码登陆,密码welcome

配置HomeAssistant(configuration.yaml)

sudo docker exec -it home-assistant env LANG=C.UTF-8 /bin/bash
vi configuration.yaml
# 按insert键,然后进行输入
# 退出vi编辑器先按esc键,然后输入:wq,回车
# 退出bash环境输入exit,回车

1.基础配置

group: !include groups.yaml
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

# 如果希望能够从iOS或macOS中的家庭应用来管理,增加下面这一行。
homekit:

……
……
……

2.Kodi和摄像头配置

……
……
……

# 在host处填入安卓平板的ip地址
media_player:
  - platform: kodi
    host: 192.168.123.194

# android_ip_webcam:
#  - host: 192.168.123.194
#    port: 8090

# ffmpeg:
# camera:
# - platform: ffmpeg
#   name: Camera
#   input: -rtsp_transport tcp -i rtsp://192.168.123.29:8554/live
# camera:
#   - platform: rpi_camera

# camera:
#   - platform: local_file
#     name: camera01
#     file_path: /share/motion/lastsnap.jpg

camera:
  - platform: mjpeg
    mjpeg_url: http://192.168.123.218:8080/?action=stream
    # mjpeg_url: http://192.168.123.59:8088/?action=snapshot

3.红外发射配置

……
……
……

# 在host和mac处填入红外发射器的ip和mac地址
switch:
  - platform: broadlink
    host: 192.168.123.107
    mac: '78:0F:77:5A:26:85'
    timeout: 15
    switches:
      door:
        friendly_name: "大门"
        command_on: 'eAY0AC8PEAAB2xAuLw8QLi8PEC4vDxEuLw8QLi8QEC4vEBEuLw8vDy8QEC4vDxEuLw8RLi8QEC4AAAAA'
        command_off: 'eAY0AC8PEAAB2xAuLw8QLi8PEC4vDxEuLw8QLi8QEC4vEBEuLw8vDy8QEC4vDxEuLw8RLi8QEC4AAAAA'
  • 访问http://HomeAssistant的ip地址:8123
  • 点击左下角的第一个服务按钮,然后选择switch.broadlink_learn_command
  • 点击Call Service,这时博联红外发射器的前端会出现小红点。用遥控器要学习的按键对着小红点按下去,小红点消失

微信图片_20190829152844

微信截图_20190829004342

  • 点击左下角的第二个状态按钮,找到类似下图的内容,将最后的一长串代码复制到配置文件的对应位置即可

ssfdfdfd

4.人脸识别和tts配置

……
……
……

# 正确填写下面的参数
# 百度人脸识别注册:https://cloud.baidu.com/product/face
sensor:
  - platform: baidu_face
    api_key: "tHjWWiNXlQLFNT2SdrNPWwH3"
    secret_key: "LXHQ5kP6GYewzOqFL1umrK4mfljx3W4r"
    group_list: "['normal_group']"
    camera_entity_id: "camera.mjpeg_camera"
    token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiI0NjBjMjFlM2NiZjY0YTliYTdjZTFjMzVhNDYzY2I2YiIsImlhdCI6MTU3ODU0NjU3OSwiZXhwIjoxODkzOTA2NTc5fQ.rUDysZx983VxFJPj4cq5gynlNa3A7HO5zd8H9FxTHAQ"
    # liveness: "NORMAL"
    # name: "ren lian shi bie"
    # port: 8123
    # pic_url: "网络、本地图片地址"
    scan_interval: 1

# image_processing:
#   - platform: baidu_face_indentify
#     app_id: '11478116'
#     api_key: 'tHjWWiNXlQLFNT2SdrNPWwH3'
#     secret_key: 'LXHQ5kP6GYewzOqFL1umrK4mfljx3W4r'
#     snapshot_filepath: '/home/pi/images/'
#     resize: 0
#     detect_top_num: 3
#     ha_url: 'http://192.168.123.201:8123'
#     # ha_password: 'welcome'
#     scan_interval: 1
#     source:
#      - entity_id: camera.mjpeg_camera
#        name: faceRec



# 百度TTS注册:https://cloud.baidu.com/product/speech/tts
tts:
  - platform: baidu
    app_id: 9217941
    api_key: qW5HLj4Ks6DfsCV2K9If5O80
    secret_key: 37riCUCmGj1lfrhaGcyu11wWqCjvZbZR
    #person:声音(0:女,1:男,3:特殊声音,4:特殊声音,缺省0)
    person: 4
    #speed:语速0-9(缺省5)
    speed: 5
    #pitch:语调0-9(缺省5)
    pitch: 5
    #volume:音量0-15(缺省5)
    volume: 15

5.人脸注册

  • 将照片传到HomeAssistant目录下的uploadpics目录下
  • 选择注册人脸服务进行注册

微信截图_20190829163801

依照此格式填写: {"user_info":"乔碧萝","image":"/config/uploadpics/zhangcuihua.jpg","uid":"tank"}

user_info为用户标识,识别出人脸时候系统会显示这个名称 uid用于查找删除人脸数据 image为上传照片的路径

注册成功后会弹出提示 微信截图_20190829164224

  • 可对注册的人脸进行颜值检测

gsdgsdf

依照此格式填写: {"image":"/config/uploadpics/zhangcuihua.jpg"}

检测成功会返回结果

微信截图_20190829164611

6.自动化配置 automations.yaml

……
……
……

# 当检测到人脸(人脸识别结果大于0),就执行tts和开关操作。
- id: baiduface
  alias: face_indentify
  trigger:
  - entity_id: sensor.ren_lian_shi_bie
    platform: state
    to: 'True'
  action:
  - data_template:
      entity_id: media_player.kodi
      message: >
        {% if states.sensor.ren_lian_shi_bie.attributes["user_id"] == "chy01" %}
          你好,陈虹宇!
        {% elif states.sensor.ren_lian_shi_bie.attributes["user_id"] == "sjc" %}
          你好,宿金超!
        {% endif %}
    service: tts.baidu_say
    service: switch.turn_on
      data:
        - entity_id: switch.door

执行人脸解锁

  • 将安卓手机放置在大门边上
  • 可以将另一个大的显示器放在边上,全屏实时显示手机拍摄的实时画面
  • 当人靠近手机摄像头的时候,如果能够正确识别,则会播放语音问候,并执行红外线开关操作

在这个基础上,可以扩展出各种其他的应用,基本过程就是通过正确的人脸识别,触发其他物联网操作。 比如在教室门口识别到教师后,就自动执行打开投影仪、放下投影幕布,拉上窗帘等一系列上课操作。

© 北京师范大学智慧学习研究院 all right reserved,powered by Gitbook修订时间: 2020-10-22

results matching ""

    No results matching ""

    results matching ""

      No results matching ""